﻿/* 
 * 自定义表格操作
 */
(function ($) {
    $.fn.datatablesSet = function (option) {
        /// <summary>
        /// 表格初始化,基于datatables控件
        /// </summary>
        /// <param name="option">配置项:<br/>
        /// ajax:ajax动态获取数据json;<br/>
        /// ajax.url:ajax获取数据的地址，默认为'';
        /// ajax.data:ajax提交数据，默认为{};
        /// ajax.type:ajax提交类型，默认为"POST";<br/>
        /// responsive:;
        /// autoWidth:控制Datatables是否自适应宽度，默认为false;<br/>
        /// searching:是否允许Datatables开启本地搜索，默认为false;
        /// ordering:是否允许Datatables开启排序，默认为false;<br/>
        /// processing:是否显示处理状态，默认为true;
        /// serverSide:是否开启服务器模式，默认为true;<br/>
        /// language.url:从远程地址中加载语言信息，默认为"../../Scripts/zh_CN.txt";<br/>
        /// 其他参数请参考datatables官网：http://datatables.club/ ;<br/>
        ///</param>
        var opt = {
            ajax: {
                url: "",
                data: {},
                type: "POST"
            },
            responsive: true,
            autoWidth: false,
            searching: false,
            ordering: false,
            processing: true,
            serverSide: true,
            lengthMenu: [ 10, 25, 50, 75, 100 ],
            language: { url: "../../../Scripts/zh_CN.txt" }
        };
        $.extend(opt.ajax, option.ajax);
        option.ajax = opt.ajax;
        $.extend(opt, option);
        //如果初始化使用了ajax.data那么搜索时ajax.data中的参数无法清空或重新赋值，所以要将data中的参数通过url传递，并清空data
        if (opt.ajax.url.indexOf("?") >= 0) {
            opt.ajax.url = opt.ajax.url + "&";
        } else {
            opt.ajax.url = opt.ajax.url + "?";
        }
        if (!$.isEmptyObject(opt.ajax.data)) {
            $.each(opt.ajax.data, function (key, value) {
                opt.ajax.url = opt.ajax.url + encodeURIComponent(key) + "=" + encodeURIComponent(value) + "&";
            });
        }
        opt.ajax.data = {};
        var t = $(this).DataTable(opt);
        return t;
    }
    $.fn.datatablesReAjax = function (url, data, callback, resetPaging) {
        /// <summary>
        /// 设置新的url并加载数据
        /// </summary>
        /// <param name="url">新的url地址</param>
        /// <param name="data">新的ajax提交数据</param>
        /// <param name="callback">当服务器返回数据并重绘完毕时执行此回调方法，回调方法返回的是服务器返回的数据 </param>
        /// <param name="resetPaging">是否重置分页信息，设置为true</param>
        if (typeof data === "object") {
            url = url + "?";
            $.each(data, function (key, value) {
                url = url + encodeURIComponent(key) + "=" + encodeURIComponent(value) + "&";
            });
        }
        $(this).DataTable().ajax.url(url).load(callback, resetPaging);
    }
})(jQuery);
